package Poker;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 *
 * @author Ziad Aloulou
 */
public class Evenements extends KeyAdapter implements ActionListener, ChangeListener {

    private Main.Frame frame;
    private Affichage affichage;
    private JoueurPoker[] joueurs;
    public static boolean flop = false;
    public static boolean turn = false;
    public static boolean river = false;
    public int nbJoueurs;
    public int placeJoueurCourant = 0;
    public int positionJoueur = 0;

    public Evenements(Main.Frame frame, Affichage affichage, JoueurPoker[] joueurs){
        this.frame = frame;
        this.affichage = affichage;
        this.joueurs = joueurs;
    }

    public Evenements(Main.Frame frame, Affichage affichage, JoueurPoker[] joueurs, int nbJoueurs) {

        this.frame = frame;
        this.affichage = affichage;
        this.joueurs = joueurs;
        this.nbJoueurs = nbJoueurs;
    }

//    public void rotationBlind() {
//        joueurs[positionJoueur].setBlind(Joueur.tailleBlind.petitBlind);
//        joueurs[positionJoueur + 1].setBlind(Joueur.tailleBlind.grosBlind);
//    }
    public void miseChips() {
    }

    public void tableTurn() {
        if (placeJoueurCourant == (nbJoueurs)) {
            while (joueurs[placeJoueurCourant - 1].getJeu() == false) {
                placeJoueurCourant--;
            }

            if (river == false && turn == false && flop == false) {

                flop = true;
                affichage.btnCheck.setEnabled(true);
                affichage.btnBet.setEnabled(true);
                affichage.btnRaise.setEnabled(false);

            } else if (river == false && flop == true && turn == false) {

                turn = true;
                affichage.btnCheck.setEnabled(true);
                affichage.btnBet.setEnabled(true);
                affichage.btnRaise.setEnabled(false);


            } else if (flop == true && turn == true && river == false) {

                river = true;
                affichage.btnCheck.setEnabled(true);
                affichage.btnBet.setEnabled(true);
                affichage.btnRaise.setEnabled(false);
                affichage.validation();
            }
            placeJoueurCourant = 0;
        }
    }

    @Override
    public void stateChanged(ChangeEvent ce){
      int value = affichage.sldBet.getValue();
      String str = Integer.toString(value);
      affichage.txtRaise.setText(str);
    }

     /**
     * Methode pour gerer les evenements sur les JComponents
     * @param ae: Prendre en note l'action de l'utilisateur
     */
    @Override
    public void actionPerformed(ActionEvent ae) {
        if (joueurs[placeJoueurCourant].getJeu() == true) {
            if (ae.getSource() == affichage.btnCheck) {
            }
            if (ae.getSource() == affichage.btnFold) {
                joueurs[placeJoueurCourant].getHand0().setImage(null);
                joueurs[placeJoueurCourant].getHand1().setImage(null);
                joueurs[placeJoueurCourant].setJeu(false);
            }
            if (ae.getSource() == affichage.btnRaise) {
                placeJoueurCourant = 0;
                frame.miseTotal += Integer.parseInt(affichage.txtRaise.getText());
            }
            if (ae.getSource() == affichage.btnBet) {
                affichage.btnCheck.setEnabled(false);
                affichage.btnRaise.setEnabled(true);
                frame.miseTotal += Integer.parseInt(affichage.txtRaise.getText());
            }
            placeJoueurCourant++;
            tableTurn();
        } else {
            if (joueurs[placeJoueurCourant].getPlace() == nbJoueurs - 1
                    && joueurs[placeJoueurCourant].getJeu() == false) {
                placeJoueurCourant++;
                tableTurn();
            } else {
                while (joueurs[placeJoueurCourant].getJeu() == false) {
                    placeJoueurCourant++;
                }
                if (ae.getSource() == affichage.btnCheck) {
                }
                if (ae.getSource() == affichage.btnFold) {
                    joueurs[placeJoueurCourant].getHand0().setImage(null);
                    joueurs[placeJoueurCourant].getHand1().setImage(null);
                    joueurs[placeJoueurCourant].setJeu(false);
                }
                if (ae.getSource() == affichage.btnRaise) {
                }
                placeJoueurCourant++;
                tableTurn();
            }

            

        }
        frame.getRootPane().revalidate();
        frame.repaint();
    }
}
